{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 基于矩阵分解的协同过滤"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "# coding: utf-8\n",
    "# -*- coding:utf-8 -*-\n",
    "import sys\n",
    "from imp import reload\n",
    "reload(sys)\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import _pickle as cPickle\n",
    "import scipy.io as sio\n",
    "\n",
    "from collections import defaultdict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 读取预计算的数据\n",
    "# 读取用户、歌曲信息倒排索引\n",
    "user_index = cPickle.load(open(\"user_index.pkl\",'rb'))\n",
    "song_index = cPickle.load(open(\"song_index.pkl\",'rb'))\n",
    "# 读取用户、歌曲倒排表\n",
    "user_songs = cPickle.load(open(\"user_songs.pkl\",'rb'))\n",
    "song_users = cPickle.load(open(\"song_users.pkl\",'rb'))\n",
    "# 读取用户相似度矩阵\n",
    "user_sim_matrix = cPickle.load(open(\"user_sim_matrix.pkl\",'rb'))\n",
    "# 读取用户打分矩阵\n",
    "user_song_scores = sio.mmread('user_song_scores').todense()\n",
    "user_song_scores_test = cPickle.load(open(\"user_song_scores_test.pkl\",\"rb\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 初始化模型参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "K = 20\n",
    "n_users,n_songs = user_song_scores.shape\n",
    "# 歌曲i的属性值\n",
    "bi = np.zeros(n_songs)  \n",
    "# 用户u的属性值\n",
    "bu = np.zeros(n_users)  \n",
    "    \n",
    "#the small matrix\n",
    "pu = random((n_users,K))/10*(np.sqrt(K))\n",
    "qi = random((K, n_songs))/10*(np.sqrt(K))  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 计算整体用户平均打分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "score_sum = 0\n",
    "score_count = 0\n",
    "score_avg = 0\n",
    "for u in range(n_users):\n",
    "    for s in range(n_songs):\n",
    "        score = user_song_scores[u,s]\n",
    "        if score > 0:\n",
    "            score_sum += score\n",
    "            score_count += 1\n",
    "if score_count > 0:\n",
    "    score_avg = score_sum / score_count\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.05525421030486784"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score_avg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 梯度下降迭代计算模型参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 设置迭代步数\n",
    "n_steps = 50\n",
    "#设置初始学习率\n",
    "gamma = 0.004\n",
    "# 设置正则项系数\n",
    "Lambda = 0.15\n",
    "\n",
    "for step in range(n_steps):\n",
    "    for u_item in user_index.items():\n",
    "        u_index = u_item[1]\n",
    "        u_songs = user_songs[u_index]\n",
    "        for song in u_songs:\n",
    "            # 计算预测分数\n",
    "            pred_score = score_avg + bi[song] + bu[u_index] + pu[u_index,:].dot(qi[:,song])\n",
    "            # 预测残差\n",
    "            eui = user_song_scores[u_index,song] - pred_score\n",
    "            # 更新参数\n",
    "            bi[song] += gamma *(eui - Lambda * bi[song])\n",
    "            bu[u_index] += gamma *(eui - Lambda * bu[u_index])\n",
    "            for k in range(K):\n",
    "                # 更新pu，qi\n",
    "                temp = pu[u_index,k] + gamma *(eui*qi[k,song] - Lambda * pu[u_index,k])\n",
    "                qi[k,song] += gamma *(eui * pu[u_index,k] - Lambda * qi[k,song])\n",
    "                pu[u_index,k] = temp\n",
    "    # 学习率递减\n",
    "    gamma = gamma * 0.93\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 计算用户对歌曲的打分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(u_index):   \n",
    "    songs_predict_dict={}\n",
    "    for s_item in song_index.items():\n",
    "        s_index = s_item[1]\n",
    "        score = user_song_scores[u_index, s_index]\n",
    "        if score > 0:\n",
    "            continue\n",
    "        # 计算预测分数\n",
    "        songs_predict_dict[s_index] = score_avg + bi[s_index] + bu[u_index] + pu[u_index,:].dot(qi[:,s_index])\n",
    "    sorted_list = sorted(((u,i) for i,u in enumerate(songs_predict_dict)),reverse=True)\n",
    "    # 取前20作为推给该用户的推荐歌曲\n",
    "    recommended_songs=[]\n",
    "    for i in range(20):\n",
    "        recommended_songs.append(sorted_list[i][1])\n",
    "    # 计算推荐的precision和recall\n",
    "    tp = 0 # 推荐的歌曲命中真实情况\n",
    "    p = 0 # 真实集合元素数量\n",
    "    t = len(recommended_songs) # 实际推荐集合元素数量\n",
    "    user_song_test = user_song_scores_test[u_index].toarray()[0]\n",
    "    for i,score in enumerate(user_song_test):\n",
    "        if score > 0:\n",
    "            p += 1\n",
    "            if i in recommended_songs:\n",
    "                # 交集\n",
    "                tp += 1\n",
    "    # precision\n",
    "    # 推荐的集合 and 真实集合 / 推荐的集合\n",
    "    precision = (0 if t==0 else float(tp) / float(t))\n",
    "    if precision > 1:\n",
    "        print(\"tp:%s t:%s\"%(tp,t))\n",
    "        print(user_song_test)\n",
    "        print(recommended_songs)\n",
    "    # recall\n",
    "    # 推荐的集合 and 真实集合 / 真实集合\n",
    "    recall = (0 if p==0 else float(tp) / float(p))\n",
    "    return u_index,precision,recall"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 0.05 0.09090909090909091 0\n",
      "6 0.05 0.03225806451612903 6\n",
      "10 0.05 0.0625 10\n",
      "14 0.1 0.15384615384615385 14\n",
      "30 0.1 0.2 30\n",
      "32 0.1 0.08333333333333333 32\n",
      "35 0.1 0.3333333333333333 35\n",
      "44 0.05 0.05555555555555555 44\n",
      "48 0.05 0.023809523809523808 48\n",
      "50 0.05 0.06666666666666667 50\n",
      "55 0.05 0.3333333333333333 55\n",
      "57 0.05 0.16666666666666666 57\n",
      "70 0.05 0.1 70\n",
      "74 0.05 0.02127659574468085 74\n",
      "77 0.05 0.5 77\n",
      "78 0.05 0.04 78\n",
      "91 0.05 0.25 91\n",
      "92 0.05 0.013513513513513514 92\n",
      "94 0.05 0.14285714285714285 94\n",
      "97 0.1 0.02564102564102564 97\n",
      "108 0.05 0.5 108\n",
      "110 0.05 0.1111111111111111 110\n",
      "118 0.05 0.2 118\n",
      "119 0.05 0.5 119\n",
      "126 0.05 0.09090909090909091 126\n",
      "132 0.15 0.08333333333333333 132\n",
      "137 0.1 0.058823529411764705 137\n",
      "138 0.05 0.3333333333333333 138\n",
      "159 0.15 0.05454545454545454 159\n",
      "162 0.05 0.045454545454545456 162\n",
      "165 0.05 0.0625 165\n",
      "177 0.1 0.125 177\n",
      "179 0.05 0.5 179\n",
      "186 0.05 0.06666666666666667 186\n",
      "189 0.05 0.05 189\n",
      "191 0.05 0.047619047619047616 191\n",
      "192 0.05 0.029411764705882353 192\n",
      "199 0.05 0.043478260869565216 199\n",
      "204 0.05 0.16666666666666666 204\n",
      "210 0.05 0.25 210\n",
      "211 0.05 0.2 211\n",
      "219 0.05 0.125 219\n",
      "220 0.05 0.041666666666666664 220\n",
      "225 0.1 0.14285714285714285 225\n",
      "228 0.05 0.5 228\n",
      "232 0.05 0.058823529411764705 232\n",
      "234 0.05 0.14285714285714285 234\n",
      "236 0.05 0.2 236\n",
      "239 0.05 0.16666666666666666 239\n",
      "242 0.05 0.05263157894736842 242\n",
      "249 0.05 0.1111111111111111 249\n",
      "252 0.05 0.16666666666666666 252\n",
      "262 0.05 0.06666666666666667 262\n",
      "263 0.05 0.2 263\n",
      "264 0.05 0.047619047619047616 264\n",
      "276 0.05 0.08333333333333333 276\n",
      "277 0.05 0.2 277\n",
      "278 0.05 0.03125 278\n",
      "279 0.05 0.16666666666666666 279\n",
      "280 0.05 0.08333333333333333 280\n",
      "281 0.1 0.13333333333333333 281\n",
      "283 0.05 0.1 283\n",
      "288 0.05 0.1 288\n",
      "289 0.1 0.13333333333333333 289\n",
      "294 0.05 0.1111111111111111 294\n",
      "297 0.1 0.05 297\n",
      "311 0.05 0.14285714285714285 311\n",
      "314 0.1 0.05128205128205128 314\n",
      "318 0.05 0.08333333333333333 318\n",
      "319 0.05 0.125 319\n",
      "323 0.15 0.029411764705882353 323\n",
      "324 0.05 0.043478260869565216 324\n",
      "325 0.05 0.0625 325\n",
      "331 0.05 0.06666666666666667 331\n",
      "332 0.05 0.043478260869565216 332\n",
      "334 0.05 0.024390243902439025 334\n",
      "338 0.05 0.08333333333333333 338\n",
      "340 0.05 0.01639344262295082 340\n",
      "346 0.05 0.03125 346\n",
      "357 0.05 0.05555555555555555 357\n",
      "359 0.05 0.03333333333333333 359\n",
      "360 0.05 0.02702702702702703 360\n",
      "363 0.05 0.05263157894736842 363\n",
      "373 0.05 0.03571428571428571 373\n",
      "374 0.05 0.25 374\n",
      "379 0.05 0.5 379\n",
      "380 0.05 0.125 380\n",
      "382 0.05 0.14285714285714285 382\n",
      "384 0.05 0.05263157894736842 384\n",
      "385 0.05 0.25 385\n",
      "388 0.05 0.14285714285714285 388\n",
      "389 0.05 0.043478260869565216 389\n",
      "390 0.05 0.07142857142857142 390\n",
      "397 0.15 0.3333333333333333 397\n",
      "399 0.05 0.3333333333333333 399\n",
      "400 0.05 0.01282051282051282 400\n",
      "402 0.05 0.047619047619047616 402\n",
      "410 0.05 0.1111111111111111 410\n",
      "414 0.05 0.3333333333333333 414\n",
      "416 0.05 0.1111111111111111 416\n",
      "417 0.05 0.09090909090909091 417\n",
      "423 0.05 0.038461538461538464 423\n",
      "430 0.05 0.1 430\n",
      "431 0.05 0.01020408163265306 431\n",
      "432 0.05 0.045454545454545456 432\n",
      "433 0.05 0.14285714285714285 433\n",
      "439 0.05 0.041666666666666664 439\n",
      "440 0.05 0.07692307692307693 440\n",
      "442 0.05 0.1 442\n",
      "443 0.05 0.2 443\n",
      "445 0.05 0.05263157894736842 445\n",
      "446 0.05 0.034482758620689655 446\n",
      "448 0.05 0.045454545454545456 448\n",
      "449 0.1 0.25 449\n",
      "450 0.05 0.05 450\n",
      "453 0.1 0.07142857142857142 453\n",
      "454 0.1 0.13333333333333333 454\n",
      "463 0.05 0.0625 463\n",
      "471 0.1 0.08333333333333333 471\n",
      "473 0.05 0.25 473\n",
      "476 0.05 0.125 476\n",
      "479 0.05 0.25 479\n",
      "480 0.05 0.3333333333333333 480\n",
      "481 0.05 0.2 481\n",
      "483 0.05 0.07142857142857142 483\n",
      "487 0.15 0.13043478260869565 487\n",
      "494 0.05 0.058823529411764705 494\n",
      "496 0.05 0.1 496\n",
      "502 0.05 0.015625 502\n",
      "511 0.05 0.125 511\n",
      "512 0.05 0.1111111111111111 512\n",
      "519 0.05 0.012048192771084338 519\n",
      "521 0.05 0.05555555555555555 521\n",
      "522 0.1 0.08333333333333333 522\n",
      "523 0.05 0.07142857142857142 523\n",
      "525 0.05 0.09090909090909091 525\n",
      "532 0.1 0.09523809523809523 532\n",
      "535 0.05 0.0625 535\n",
      "536 0.1 0.06896551724137931 536\n",
      "540 0.05 0.02127659574468085 540\n",
      "541 0.05 0.16666666666666666 541\n",
      "555 0.05 0.06666666666666667 555\n",
      "565 0.05 0.08333333333333333 565\n",
      "570 0.1 0.2222222222222222 570\n",
      "576 0.05 0.045454545454545456 576\n",
      "578 0.05 0.06666666666666667 578\n",
      "579 0.05 0.16666666666666666 579\n",
      "580 0.05 0.08333333333333333 580\n",
      "583 0.05 0.2 583\n",
      "584 0.05 0.125 584\n",
      "591 0.05 0.01282051282051282 591\n",
      "595 0.05 0.25 595\n",
      "597 0.05 0.125 597\n",
      "598 0.1 0.08 598\n",
      "614 0.05 0.0625 614\n",
      "616 0.05 0.2 616\n",
      "617 0.05 0.09090909090909091 617\n",
      "622 0.05 0.1 622\n",
      "624 0.05 0.14285714285714285 624\n",
      "636 0.05 0.07142857142857142 636\n",
      "644 0.1 0.09090909090909091 644\n",
      "654 0.05 0.25 654\n",
      "657 0.1 0.25 657\n",
      "658 0.1 0.10526315789473684 658\n",
      "667 0.05 0.1 667\n",
      "668 0.05 0.08333333333333333 668\n",
      "670 0.05 0.04 670\n",
      "671 0.05 0.1111111111111111 671\n",
      "673 0.05 0.07692307692307693 673\n",
      "677 0.15 0.03488372093023256 677\n",
      "679 0.05 0.058823529411764705 679\n",
      "687 0.05 0.09090909090909091 687\n",
      "692 0.05 0.14285714285714285 692\n",
      "697 0.05 0.5 697\n",
      "705 0.1 0.2222222222222222 705\n",
      "712 0.05 0.05263157894736842 712\n",
      "713 0.05 0.043478260869565216 713\n",
      "717 0.05 0.09090909090909091 717\n",
      "721 0.1 0.1 721\n",
      "738 0.1 0.2 738\n",
      "745 0.05 0.058823529411764705 745\n",
      "750 0.05 0.125 750\n",
      "760 0.05 0.03571428571428571 760\n",
      "764 0.05 0.14285714285714285 764\n",
      "769 0.05 0.07692307692307693 769\n",
      "770 0.05 0.03333333333333333 770\n",
      "771 0.1 0.07692307692307693 771\n",
      "780 0.15 0.15 780\n",
      "799 0.05 0.04 799\n",
      "800 0.05 0.019230769230769232 800\n",
      "802 0.05 0.041666666666666664 802\n",
      "803 0.05 0.0196078431372549 803\n",
      "808 0.05 0.05263157894736842 808\n",
      "809 0.05 0.07692307692307693 809\n",
      "811 0.05 0.09090909090909091 811\n",
      "814 0.05 0.08333333333333333 814\n",
      "821 0.05 0.08333333333333333 821\n",
      "829 0.05 0.2 829\n",
      "830 0.05 0.5 830\n",
      "835 0.1 0.13333333333333333 835\n",
      "841 0.1 0.14285714285714285 841\n",
      "843 0.1 0.038461538461538464 843\n",
      "847 0.05 0.16666666666666666 847\n",
      "849 0.1 0.13333333333333333 849\n",
      "857 0.05 0.16666666666666666 857\n",
      "861 0.1 0.125 861\n",
      "866 0.05 0.14285714285714285 866\n",
      "867 0.05 0.058823529411764705 867\n",
      "879 0.05 0.1111111111111111 879\n",
      "882 0.05 0.1 882\n",
      "886 0.05 0.1 886\n",
      "887 0.05 0.09090909090909091 887\n",
      "890 0.05 0.125 890\n",
      "892 0.05 0.05555555555555555 892\n",
      "918 0.05 0.07692307692307693 918\n",
      "924 0.05 0.14285714285714285 924\n",
      "926 0.05 0.05 926\n",
      "935 0.05 0.07142857142857142 935\n",
      "938 0.05 0.047619047619047616 938\n",
      "950 0.05 0.25 950\n",
      "957 0.05 0.06666666666666667 957\n",
      "960 0.05 0.3333333333333333 960\n",
      "961 0.05 0.125 961\n",
      "967 0.1 0.2857142857142857 967\n",
      "974 0.05 0.07142857142857142 974\n",
      "975 0.05 0.2 975\n",
      "976 0.05 0.07142857142857142 976\n",
      "993 0.05 0.08333333333333333 993\n",
      "1003 0.05 0.04 1003\n",
      "1004 0.05 0.5 1004\n",
      "1010 0.05 0.5 1010\n",
      "1016 0.05 0.2 1016\n",
      "1018 0.05 0.07142857142857142 1018\n",
      "1022 0.05 0.125 1022\n",
      "1027 0.05 0.06666666666666667 1027\n",
      "1029 0.05 0.043478260869565216 1029\n",
      "1031 0.05 0.14285714285714285 1031\n",
      "1042 0.05 0.058823529411764705 1042\n",
      "1043 0.1 0.022222222222222223 1043\n",
      "1044 0.05 0.0625 1044\n",
      "1053 0.05 0.09090909090909091 1053\n",
      "1059 0.05 0.125 1059\n",
      "1069 0.05 0.0625 1069\n",
      "1070 0.05 0.16666666666666666 1070\n",
      "1072 0.05 0.058823529411764705 1072\n",
      "1077 0.1 0.18181818181818182 1077\n",
      "1078 0.05 0.030303030303030304 1078\n",
      "1081 0.1 0.125 1081\n",
      "1085 0.05 0.07142857142857142 1085\n",
      "1086 0.05 0.2 1086\n",
      "1088 0.05 0.058823529411764705 1088\n",
      "1089 0.05 0.043478260869565216 1089\n",
      "1092 0.05 0.04 1092\n",
      "1096 0.05 0.015873015873015872 1096\n",
      "1098 0.05 0.06666666666666667 1098\n",
      "1101 0.05 0.05 1101\n",
      "1105 0.05 0.05 1105\n",
      "1109 0.05 0.05555555555555555 1109\n",
      "1119 0.1 0.09090909090909091 1119\n",
      "1127 0.05 0.07692307692307693 1127\n",
      "1132 0.05 0.3333333333333333 1132\n",
      "1137 0.05 0.06666666666666667 1137\n",
      "1140 0.05 0.07692307692307693 1140\n",
      "1141 0.05 0.2 1141\n",
      "1143 0.15 0.1111111111111111 1143\n",
      "1147 0.1 0.0273972602739726 1147\n",
      "1171 0.05 0.125 1171\n",
      "1173 0.05 0.125 1173\n",
      "1179 0.05 0.125 1179\n",
      "1181 0.05 0.07692307692307693 1181\n",
      "1182 0.15 0.029411764705882353 1182\n",
      "1183 0.05 0.1 1183\n",
      "1185 0.1 0.021052631578947368 1185\n",
      "1189 0.05 0.08333333333333333 1189\n",
      "1192 0.05 0.09090909090909091 1192\n",
      "1194 0.1 0.3333333333333333 1194\n",
      "1196 0.1 0.029411764705882353 1196\n",
      "1199 0.1 0.09090909090909091 1199\n",
      "1206 0.1 0.125 1206\n",
      "1210 0.1 0.046511627906976744 1210\n",
      "1213 0.05 0.015151515151515152 1213\n",
      "1221 0.05 0.5 1221\n",
      "1223 0.05 0.038461538461538464 1223\n",
      "1224 0.05 0.09090909090909091 1224\n",
      "1227 0.05 0.014084507042253521 1227\n",
      "1229 0.05 0.03125 1229\n",
      "1230 0.1 0.1111111111111111 1230\n",
      "1233 0.05 0.05555555555555555 1233\n",
      "1234 0.1 0.2 1234\n",
      "1242 0.05 0.058823529411764705 1242\n",
      "1246 0.05 0.1 1246\n",
      "1253 0.05 0.09090909090909091 1253\n",
      "1254 0.05 0.047619047619047616 1254\n",
      "1258 0.1 0.05 1258\n",
      "1267 0.05 0.05 1267\n",
      "1275 0.05 0.1111111111111111 1275\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1282 0.05 0.07692307692307693 1282\n",
      "1293 0.05 0.03225806451612903 1293\n",
      "1295 0.05 0.07692307692307693 1295\n",
      "1299 0.05 0.1 1299\n",
      "1300 0.05 0.038461538461538464 1300\n",
      "1323 0.05 0.3333333333333333 1323\n",
      "1324 0.05 0.1 1324\n",
      "1326 0.05 0.014492753623188406 1326\n",
      "1329 0.05 0.09090909090909091 1329\n",
      "1331 0.05 0.06666666666666667 1331\n",
      "1338 0.05 0.08333333333333333 1338\n",
      "1349 0.05 0.1 1349\n",
      "1351 0.05 0.09090909090909091 1351\n",
      "1352 0.05 0.0625 1352\n",
      "1353 0.05 0.058823529411764705 1353\n",
      "1359 0.05 0.3333333333333333 1359\n",
      "1370 0.05 0.022222222222222223 1370\n",
      "1371 0.05 0.0625 1371\n",
      "1373 0.05 0.125 1373\n",
      "1378 0.05 0.16666666666666666 1378\n",
      "1396 0.05 0.04 1396\n",
      "1403 0.05 0.2 1403\n",
      "1409 0.05 0.09090909090909091 1409\n",
      "1411 0.1 0.10526315789473684 1411\n",
      "1418 0.05 0.3333333333333333 1418\n",
      "1419 0.05 0.25 1419\n",
      "1421 0.05 0.045454545454545456 1421\n",
      "1424 0.05 0.06666666666666667 1424\n",
      "1425 0.1 0.15384615384615385 1425\n",
      "1432 0.05 0.07142857142857142 1432\n",
      "1443 0.05 0.04 1443\n",
      "1454 0.05 0.013513513513513514 1454\n",
      "1455 0.05 0.2 1455\n",
      "1456 0.05 0.1111111111111111 1456\n",
      "1461 0.05 0.14285714285714285 1461\n",
      "1466 0.05 0.05263157894736842 1466\n",
      "1467 0.1 0.022222222222222223 1467\n",
      "1474 0.05 0.3333333333333333 1474\n",
      "1481 0.15 0.15789473684210525 1481\n",
      "1484 0.05 0.02631578947368421 1484\n",
      "1491 0.05 0.1 1491\n",
      "1500 0.05 0.011494252873563218 1500\n",
      "1505 0.05 0.1 1505\n",
      "1506 0.05 0.024390243902439025 1506\n",
      "1507 0.05 0.1111111111111111 1507\n",
      "1511 0.1 0.024096385542168676 1511\n",
      "1513 0.05 0.058823529411764705 1513\n",
      "1516 0.05 0.047619047619047616 1516\n",
      "1517 0.1 0.043478260869565216 1517\n",
      "1533 0.1 0.125 1533\n",
      "1541 0.05 0.14285714285714285 1541\n",
      "1543 0.05 0.07692307692307693 1543\n",
      "1546 0.05 0.07692307692307693 1546\n",
      "1550 0.05 0.2 1550\n",
      "1551 0.05 0.1111111111111111 1551\n",
      "1561 0.05 0.16666666666666666 1561\n",
      "1568 0.05 0.1 1568\n",
      "1572 0.15 0.23076923076923078 1572\n",
      "1573 0.05 0.03225806451612903 1573\n",
      "1578 0.1 0.1 1578\n",
      "1580 0.1 0.02857142857142857 1580\n",
      "1582 0.05 0.14285714285714285 1582\n",
      "1584 0.05 0.1 1584\n",
      "1585 0.05 0.25 1585\n",
      "1587 0.05 0.5 1587\n",
      "1590 0.05 0.07692307692307693 1590\n",
      "1591 0.05 0.1111111111111111 1591\n",
      "1592 0.05 0.0625 1592\n",
      "1602 0.1 0.10526315789473684 1602\n",
      "1615 0.1 0.5 1615\n",
      "1618 0.05 0.0625 1618\n",
      "1619 0.05 0.01639344262295082 1619\n",
      "1620 0.1 0.18181818181818182 1620\n",
      "1631 0.05 0.058823529411764705 1631\n",
      "1637 0.1 0.125 1637\n",
      "1643 0.05 0.058823529411764705 1643\n",
      "1644 0.05 0.05555555555555555 1644\n",
      "1646 0.05 0.07692307692307693 1646\n",
      "1648 0.05 0.5 1648\n",
      "1649 0.05 0.03225806451612903 1649\n",
      "1653 0.05 0.125 1653\n",
      "1654 0.05 0.25 1654\n",
      "1656 0.05 0.2 1656\n",
      "1657 0.05 0.16666666666666666 1657\n",
      "1660 0.05 0.5 1660\n",
      "1661 0.1 0.028169014084507043 1661\n",
      "1664 0.05 0.015625 1664\n",
      "1673 0.05 0.125 1673\n",
      "1678 0.05 0.045454545454545456 1678\n",
      "1687 0.1 0.2222222222222222 1687\n",
      "1688 0.05 0.043478260869565216 1688\n",
      "1689 0.1 0.2222222222222222 1689\n",
      "1690 0.05 0.058823529411764705 1690\n",
      "1696 0.1 0.06451612903225806 1696\n",
      "1701 0.05 0.047619047619047616 1701\n",
      "1702 0.05 0.07692307692307693 1702\n",
      "1713 0.1 0.18181818181818182 1713\n",
      "1738 0.05 0.14285714285714285 1738\n",
      "1742 0.05 0.1111111111111111 1742\n",
      "1748 0.05 0.3333333333333333 1748\n",
      "1752 0.05 0.0625 1752\n",
      "1756 0.05 0.045454545454545456 1756\n",
      "1758 0.05 0.16666666666666666 1758\n",
      "1761 0.05 0.08333333333333333 1761\n",
      "1768 0.05 0.5 1768\n",
      "1769 0.05 0.2 1769\n",
      "1770 0.05 0.1111111111111111 1770\n",
      "1772 0.05 0.045454545454545456 1772\n",
      "1792 0.05 0.16666666666666666 1792\n",
      "1795 0.05 0.2 1795\n",
      "1799 0.05 0.07692307692307693 1799\n",
      "1802 0.05 0.1 1802\n",
      "1803 0.05 0.05263157894736842 1803\n",
      "1804 0.05 0.5 1804\n",
      "1805 0.1 0.125 1805\n",
      "1806 0.05 0.07692307692307693 1806\n",
      "1811 0.05 0.012658227848101266 1811\n",
      "1816 0.05 0.14285714285714285 1816\n",
      "1818 0.15 0.030303030303030304 1818\n",
      "1821 0.1 0.14285714285714285 1821\n",
      "1834 0.05 0.05263157894736842 1834\n",
      "1841 0.1 0.2857142857142857 1841\n",
      "1850 0.05 0.5 1850\n",
      "1855 0.05 0.07692307692307693 1855\n",
      "1858 0.05 0.125 1858\n",
      "1859 0.1 0.2222222222222222 1859\n",
      "1861 0.05 0.2 1861\n",
      "1866 0.05 0.07692307692307693 1866\n",
      "1870 0.1 0.09523809523809523 1870\n",
      "1871 0.05 0.1 1871\n",
      "1873 0.05 0.14285714285714285 1873\n",
      "1876 0.05 0.125 1876\n",
      "1890 0.05 0.04 1890\n",
      "1897 0.05 0.07142857142857142 1897\n",
      "1904 0.05 0.012345679012345678 1904\n",
      "1915 0.05 0.038461538461538464 1915\n",
      "1924 0.05 0.058823529411764705 1924\n",
      "1926 0.1 0.08 1926\n",
      "1930 0.05 0.04 1930\n",
      "1933 0.05 0.0625 1933\n",
      "1959 0.05 0.058823529411764705 1959\n",
      "1960 0.05 0.14285714285714285 1960\n",
      "1965 0.05 0.037037037037037035 1965\n",
      "1966 0.05 0.125 1966\n",
      "1975 0.2 0.04878048780487805 1975\n",
      "1976 0.05 0.04 1976\n",
      "1979 0.05 0.058823529411764705 1979\n",
      "1988 0.05 0.2 1988\n",
      "1990 0.05 0.1111111111111111 1990\n",
      "1992 0.1 0.04878048780487805 1992\n",
      "1994 0.05 0.08333333333333333 1994\n",
      "1996 0.05 0.017543859649122806 1996\n",
      "2006 0.1 0.1111111111111111 2006\n",
      "2013 0.05 0.09090909090909091 2013\n",
      "2022 0.1 0.10526315789473684 2022\n",
      "2023 0.05 1.0 2023\n",
      "2027 0.05 0.16666666666666666 2027\n",
      "2029 0.1 0.25 2029\n",
      "2031 0.05 0.125 2031\n",
      "2046 0.05 0.1111111111111111 2046\n",
      "2050 0.05 0.08333333333333333 2050\n",
      "2054 0.05 0.09090909090909091 2054\n",
      "2055 0.05 0.02564102564102564 2055\n",
      "2056 0.05 0.07692307692307693 2056\n",
      "2058 0.15 0.05 2058\n",
      "2059 0.05 0.125 2059\n",
      "2070 0.05 0.058823529411764705 2070\n",
      "2075 0.05 0.02857142857142857 2075\n",
      "2081 0.05 0.3333333333333333 2081\n",
      "2082 0.05 0.1111111111111111 2082\n",
      "2101 0.05 0.04 2101\n",
      "2103 0.05 0.07692307692307693 2103\n",
      "2106 0.1 0.4 2106\n",
      "2110 0.1 0.09523809523809523 2110\n",
      "2118 0.05 0.07142857142857142 2118\n",
      "2124 0.05 0.25 2124\n",
      "2136 0.05 0.021739130434782608 2136\n",
      "2147 0.05 0.03225806451612903 2147\n",
      "2152 0.1 0.18181818181818182 2152\n",
      "2160 0.05 0.1 2160\n",
      "2167 0.05 0.08333333333333333 2167\n",
      "2168 0.05 0.16666666666666666 2168\n",
      "2172 0.05 0.038461538461538464 2172\n",
      "2173 0.1 0.08 2173\n",
      "2174 0.15 0.061224489795918366 2174\n",
      "2175 0.05 0.1 2175\n",
      "2178 0.05 0.09090909090909091 2178\n",
      "2179 0.05 0.06666666666666667 2179\n",
      "2182 0.05 0.047619047619047616 2182\n",
      "2185 0.05 0.038461538461538464 2185\n",
      "2194 0.05 0.1111111111111111 2194\n",
      "2199 0.05 0.07142857142857142 2199\n",
      "2200 0.1 0.07692307692307693 2200\n",
      "2204 0.1 0.02197802197802198 2204\n",
      "2205 0.05 0.3333333333333333 2205\n",
      "2206 0.05 0.14285714285714285 2206\n",
      "2217 0.05 0.047619047619047616 2217\n",
      "2221 0.05 0.029411764705882353 2221\n",
      "2222 0.05 0.08333333333333333 2222\n",
      "2225 0.05 0.2 2225\n",
      "2238 0.05 0.023809523809523808 2238\n",
      "2245 0.05 0.1111111111111111 2245\n",
      "2249 0.05 0.1111111111111111 2249\n",
      "2254 0.05 0.1 2254\n",
      "2256 0.05 0.16666666666666666 2256\n",
      "2259 0.05 0.2 2259\n",
      "2261 0.2 0.034482758620689655 2261\n",
      "2266 0.05 0.14285714285714285 2266\n",
      "2270 0.05 0.3333333333333333 2270\n",
      "2277 0.05 0.07142857142857142 2277\n",
      "2278 0.05 0.043478260869565216 2278\n",
      "2280 0.1 0.08 2280\n",
      "2284 0.05 0.14285714285714285 2284\n",
      "2286 0.05 0.058823529411764705 2286\n",
      "2293 0.05 0.06666666666666667 2293\n",
      "2298 0.1 0.044444444444444446 2298\n",
      "2301 0.05 0.07142857142857142 2301\n",
      "2305 0.05 0.1 2305\n",
      "2321 0.05 0.058823529411764705 2321\n",
      "2324 0.05 0.08333333333333333 2324\n",
      "2325 0.1 0.09523809523809523 2325\n",
      "2332 0.1 0.11764705882352941 2332\n",
      "2334 0.05 0.015625 2334\n",
      "2345 0.05 0.1111111111111111 2345\n",
      "2356 0.05 0.07692307692307693 2356\n",
      "2370 0.1 0.2 2370\n",
      "2386 0.05 0.041666666666666664 2386\n",
      "2387 0.05 0.07142857142857142 2387\n",
      "2395 0.1 0.14285714285714285 2395\n",
      "2398 0.1 0.06896551724137931 2398\n",
      "2400 0.1 0.2222222222222222 2400\n",
      "2401 0.05 0.125 2401\n",
      "2415 0.05 0.07692307692307693 2415\n",
      "2416 0.1 0.2222222222222222 2416\n",
      "2418 0.05 0.03571428571428571 2418\n",
      "2424 0.05 0.06666666666666667 2424\n",
      "2425 0.1 0.2857142857142857 2425\n",
      "2430 0.05 0.05 2430\n",
      "2432 0.05 0.043478260869565216 2432\n",
      "2437 0.05 0.08333333333333333 2437\n",
      "2440 0.05 0.04 2440\n",
      "2447 0.05 0.04 2447\n",
      "2455 0.05 0.25 2455\n",
      "2459 0.05 0.1 2459\n",
      "2467 0.05 0.017857142857142856 2467\n",
      "2468 0.05 0.14285714285714285 2468\n",
      "2474 0.05 0.05555555555555555 2474\n",
      "2479 0.1 0.07142857142857142 2479\n",
      "2481 0.05 0.0625 2481\n",
      "2488 0.1 0.1 2488\n",
      "2495 0.05 0.07142857142857142 2495\n",
      "2500 0.05 0.14285714285714285 2500\n",
      "2501 0.05 0.2 2501\n",
      "2502 0.05 0.043478260869565216 2502\n",
      "2503 0.1 0.2222222222222222 2503\n",
      "2506 0.05 0.045454545454545456 2506\n",
      "2509 0.05 0.09090909090909091 2509\n",
      "2510 0.05 0.011111111111111112 2510\n",
      "2513 0.05 0.16666666666666666 2513\n",
      "2523 0.05 0.125 2523\n",
      "2524 0.05 0.04 2524\n",
      "2526 0.05 0.14285714285714285 2526\n",
      "2527 0.1 0.058823529411764705 2527\n",
      "2528 0.05 0.25 2528\n",
      "2529 0.05 0.058823529411764705 2529\n",
      "2537 0.05 0.029411764705882353 2537\n",
      "2540 0.05 0.01694915254237288 2540\n",
      "2546 0.05 0.2 2546\n",
      "2551 0.05 0.07692307692307693 2551\n",
      "2560 0.05 0.09090909090909091 2560\n",
      "2570 0.05 0.03225806451612903 2570\n",
      "2572 0.05 0.041666666666666664 2572\n",
      "2573 0.05 0.05263157894736842 2573\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2583 0.1 0.16666666666666666 2583\n",
      "2585 0.05 0.5 2585\n",
      "2592 0.05 0.05555555555555555 2592\n",
      "2601 0.05 0.125 2601\n",
      "2602 0.05 0.07692307692307693 2602\n",
      "2610 0.05 0.16666666666666666 2610\n",
      "2630 0.05 0.09090909090909091 2630\n",
      "2634 0.05 0.5 2634\n",
      "2638 0.05 0.25 2638\n",
      "2640 0.1 0.1111111111111111 2640\n",
      "2643 0.05 0.07142857142857142 2643\n",
      "2644 0.05 0.047619047619047616 2644\n",
      "2661 0.05 0.07692307692307693 2661\n",
      "2679 0.05 0.043478260869565216 2679\n",
      "2684 0.05 0.0625 2684\n",
      "2686 0.1 0.13333333333333333 2686\n",
      "2692 0.05 0.1111111111111111 2692\n",
      "2695 0.05 0.16666666666666666 2695\n",
      "2698 0.15 0.08823529411764706 2698\n",
      "2699 0.15 0.1 2699\n",
      "2701 0.1 0.15384615384615385 2701\n",
      "2703 0.05 0.02564102564102564 2703\n",
      "2710 0.05 0.041666666666666664 2710\n",
      "2718 0.05 0.019230769230769232 2718\n",
      "2720 0.1 0.03333333333333333 2720\n",
      "2723 0.1 0.10526315789473684 2723\n",
      "2725 0.05 0.07692307692307693 2725\n",
      "2740 0.05 0.05263157894736842 2740\n",
      "2744 0.05 0.16666666666666666 2744\n",
      "2751 0.05 0.06666666666666667 2751\n",
      "2763 0.1 0.14285714285714285 2763\n",
      "2764 0.05 0.1 2764\n",
      "2766 0.05 0.014705882352941176 2766\n",
      "2767 0.1 0.034482758620689655 2767\n",
      "2768 0.05 0.027777777777777776 2768\n",
      "2771 0.05 0.14285714285714285 2771\n",
      "2775 0.05 0.07692307692307693 2775\n",
      "2776 0.05 0.05263157894736842 2776\n",
      "2782 0.05 0.0625 2782\n",
      "2788 0.05 0.05263157894736842 2788\n",
      "2800 0.05 0.05555555555555555 2800\n",
      "2803 0.1 0.05128205128205128 2803\n",
      "2812 0.1 0.09090909090909091 2812\n",
      "2815 0.05 0.03225806451612903 2815\n",
      "2817 0.05 0.045454545454545456 2817\n",
      "2822 0.05 0.1 2822\n",
      "2826 0.05 0.1111111111111111 2826\n",
      "2830 0.05 0.011627906976744186 2830\n",
      "2834 0.15 0.03333333333333333 2834\n",
      "2841 0.05 0.2 2841\n",
      "2863 0.05 0.3333333333333333 2863\n",
      "2864 0.05 0.07692307692307693 2864\n",
      "2865 0.05 0.2 2865\n",
      "2866 0.05 0.125 2866\n",
      "2872 0.05 0.3333333333333333 2872\n",
      "2878 0.05 0.08333333333333333 2878\n",
      "2880 0.05 0.047619047619047616 2880\n",
      "2884 0.1 0.08 2884\n",
      "2887 0.05 0.02127659574468085 2887\n",
      "2888 0.05 0.16666666666666666 2888\n",
      "2898 0.05 0.1111111111111111 2898\n",
      "2899 0.05 0.03333333333333333 2899\n",
      "2900 0.05 0.014925373134328358 2900\n",
      "2902 0.05 0.02127659574468085 2902\n",
      "2904 0.05 0.07692307692307693 2904\n",
      "2909 0.05 0.009174311926605505 2909\n",
      "2911 0.05 0.14285714285714285 2911\n",
      "2915 0.05 0.14285714285714285 2915\n",
      "2916 0.05 0.14285714285714285 2916\n",
      "2923 0.05 0.045454545454545456 2923\n",
      "2940 0.05 0.2 2940\n",
      "2942 0.05 0.06666666666666667 2942\n",
      "2944 0.05 0.05 2944\n",
      "2952 0.05 0.09090909090909091 2952\n",
      "2960 0.1 0.034482758620689655 2960\n",
      "2968 0.15 0.15 2968\n",
      "2969 0.05 0.03571428571428571 2969\n",
      "2976 0.05 0.011627906976744186 2976\n",
      "2982 0.05 0.03571428571428571 2982\n",
      "2994 0.05 0.022727272727272728 2994\n",
      "2995 0.05 0.05555555555555555 2995\n",
      "2997 0.05 0.125 2997\n",
      "3003 0.05 0.08333333333333333 3003\n",
      "3013 0.05 0.013157894736842105 3013\n",
      "3026 0.05 0.25 3026\n",
      "3030 0.05 0.011764705882352941 3030\n",
      "3031 0.05 0.14285714285714285 3031\n",
      "3036 0.05 0.058823529411764705 3036\n",
      "3037 0.05 0.08333333333333333 3037\n",
      "3046 0.1 0.10526315789473684 3046\n",
      "3047 0.05 0.0625 3047\n",
      "3054 0.1 0.029411764705882353 3054\n",
      "3059 0.05 0.07692307692307693 3059\n",
      "3064 0.1 0.15384615384615385 3064\n",
      "3065 0.2 0.044444444444444446 3065\n",
      "3067 0.1 0.125 3067\n",
      "3070 0.05 0.1 3070\n",
      "3082 0.05 0.07692307692307693 3082\n",
      "3084 0.05 0.1111111111111111 3084\n",
      "3091 0.05 0.125 3091\n",
      "3092 0.05 0.07142857142857142 3092\n",
      "3099 0.05 0.015625 3099\n",
      "3101 0.05 0.2 3101\n",
      "3103 0.05 0.25 3103\n",
      "3109 0.05 0.045454545454545456 3109\n",
      "3111 0.05 0.16666666666666666 3111\n",
      "3112 0.05 0.05263157894736842 3112\n",
      "3116 0.05 0.1111111111111111 3116\n",
      "3118 0.05 0.00980392156862745 3118\n",
      "3121 0.05 0.029411764705882353 3121\n",
      "3127 0.05 0.016129032258064516 3127\n",
      "3131 0.05 0.3333333333333333 3131\n",
      "3134 0.05 0.03571428571428571 3134\n",
      "3137 0.1 0.1 3137\n",
      "3144 0.05 0.07692307692307693 3144\n",
      "3152 0.05 0.027777777777777776 3152\n",
      "3159 0.05 0.07692307692307693 3159\n",
      "3166 0.1 0.09523809523809523 3166\n",
      "3171 0.05 0.03333333333333333 3171\n",
      "3174 0.05 0.1111111111111111 3174\n",
      "3175 0.1 0.11764705882352941 3175\n",
      "3185 0.05 0.09090909090909091 3185\n",
      "3194 0.05 0.024390243902439025 3194\n",
      "3196 0.1 0.2222222222222222 3196\n",
      "3199 0.05 0.058823529411764705 3199\n",
      "3203 0.05 0.038461538461538464 3203\n",
      "3212 0.05 0.5 3212\n",
      "3215 0.15 0.13043478260869565 3215\n",
      "3216 0.15 0.04918032786885246 3216\n",
      "3219 0.05 0.2 3219\n",
      "3221 0.05 0.25 3221\n",
      "3222 0.05 0.07142857142857142 3222\n",
      "3228 0.05 0.14285714285714285 3228\n",
      "3233 0.05 0.08333333333333333 3233\n",
      "3236 0.15 0.3 3236\n",
      "3237 0.1 0.02127659574468085 3237\n",
      "3239 0.1 0.2222222222222222 3239\n",
      "3253 0.05 0.14285714285714285 3253\n",
      "3254 0.05 0.125 3254\n",
      "3257 0.05 0.14285714285714285 3257\n",
      "3258 0.05 0.07142857142857142 3258\n",
      "3259 0.05 0.1111111111111111 3259\n",
      "3260 0.1 0.047619047619047616 3260\n",
      "3261 0.05 0.08333333333333333 3261\n",
      "3264 0.05 0.07142857142857142 3264\n",
      "3266 0.05 0.125 3266\n",
      "3269 0.05 0.0625 3269\n",
      "3275 0.05 0.05 3275\n",
      "3280 0.05 0.0625 3280\n",
      "3281 0.1 0.02702702702702703 3281\n",
      "3282 0.05 0.013888888888888888 3282\n",
      "3284 0.05 0.05263157894736842 3284\n",
      "3286 0.05 0.08333333333333333 3286\n",
      "3292 0.05 0.09090909090909091 3292\n",
      "3296 0.05 0.0625 3296\n",
      "3298 0.05 0.1 3298\n",
      "3304 0.05 0.07692307692307693 3304\n",
      "3309 0.1 0.13333333333333333 3309\n",
      "3328 0.05 0.047619047619047616 3328\n",
      "3329 0.1 0.06666666666666667 3329\n",
      "3334 0.05 0.3333333333333333 3334\n",
      "3347 0.05 1.0 3347\n",
      "3350 0.1 0.25 3350\n",
      "3356 0.05 0.1111111111111111 3356\n",
      "3365 0.05 0.08333333333333333 3365\n",
      "3372 0.05 0.0625 3372\n",
      "3376 0.05 0.06666666666666667 3376\n",
      "3377 0.05 0.125 3377\n",
      "3396 0.05 0.038461538461538464 3396\n",
      "3398 0.05 0.1111111111111111 3398\n",
      "3399 0.05 0.05555555555555555 3399\n",
      "3400 0.15 0.06666666666666667 3400\n",
      "3404 0.05 0.16666666666666666 3404\n",
      "3405 0.05 0.3333333333333333 3405\n",
      "3412 0.05 0.06666666666666667 3412\n",
      "3415 0.15 0.15 3415\n",
      "3418 0.1 0.08 3418\n",
      "3426 0.05 0.03125 3426\n",
      "3444 0.05 0.09090909090909091 3444\n",
      "3449 0.1 0.125 3449\n",
      "3455 0.05 0.09090909090909091 3455\n",
      "3457 0.05 0.5 3457\n",
      "3465 0.05 0.022222222222222223 3465\n",
      "3469 0.05 0.05 3469\n",
      "3470 0.05 0.1 3470\n",
      "3472 0.05 0.16666666666666666 3472\n",
      "3473 0.05 0.0625 3473\n",
      "3474 0.05 0.058823529411764705 3474\n",
      "3476 0.05 0.2 3476\n",
      "3478 0.05 0.029411764705882353 3478\n",
      "3480 0.05 0.1111111111111111 3480\n",
      "3487 0.05 0.09090909090909091 3487\n",
      "3491 0.05 0.07692307692307693 3491\n",
      "3492 0.1 0.024390243902439025 3492\n",
      "3497 0.05 0.25 3497\n",
      "3500 0.05 0.125 3500\n",
      "3501 0.05 0.1111111111111111 3501\n",
      "3504 0.05 1.0 3504\n",
      "3510 0.05 0.05555555555555555 3510\n",
      "3512 0.15 0.5 3512\n",
      "3515 0.1 0.14285714285714285 3515\n",
      "3518 0.05 0.05555555555555555 3518\n",
      "3528 0.05 0.05555555555555555 3528\n",
      "3529 0.05 0.1111111111111111 3529\n",
      "3531 0.05 0.1 3531\n",
      "3535 0.1 0.2 3535\n",
      "3537 0.05 0.14285714285714285 3537\n",
      "3545 0.05 0.3333333333333333 3545\n",
      "3546 0.15 0.23076923076923078 3546\n",
      "3548 0.05 0.029411764705882353 3548\n",
      "3552 0.1 0.25 3552\n",
      "3571 0.05 0.1111111111111111 3571\n",
      "3573 0.15 0.08108108108108109 3573\n",
      "3583 0.05 0.05263157894736842 3583\n",
      "3586 0.05 0.030303030303030304 3586\n",
      "3587 0.05 0.06666666666666667 3587\n",
      "3603 0.05 0.03571428571428571 3603\n",
      "3605 0.05 0.034482758620689655 3605\n",
      "3615 0.1 0.09090909090909091 3615\n",
      "3618 0.05 0.09090909090909091 3618\n",
      "3624 0.05 0.029411764705882353 3624\n",
      "3628 0.1 0.03125 3628\n",
      "3629 0.05 0.021739130434782608 3629\n",
      "3632 0.05 0.0625 3632\n",
      "3634 0.05 0.16666666666666666 3634\n",
      "3637 0.05 0.03225806451612903 3637\n",
      "3640 0.1 0.025974025974025976 3640\n",
      "3649 0.05 0.027777777777777776 3649\n",
      "3650 0.05 0.14285714285714285 3650\n",
      "3664 0.1 0.02666666666666667 3664\n",
      "3665 0.05 0.03333333333333333 3665\n",
      "3671 0.05 0.0625 3671\n",
      "3675 0.1 0.16666666666666666 3675\n",
      "3686 0.05 0.09090909090909091 3686\n",
      "3690 0.05 0.09090909090909091 3690\n",
      "3691 0.05 0.06666666666666667 3691\n",
      "3693 0.05 0.011235955056179775 3693\n",
      "3698 0.05 0.045454545454545456 3698\n",
      "3703 0.05 0.04 3703\n",
      "3707 0.05 0.14285714285714285 3707\n",
      "3709 0.05 0.2 3709\n",
      "3710 0.05 0.07142857142857142 3710\n",
      "3718 0.05 0.14285714285714285 3718\n",
      "3722 0.05 0.2 3722\n",
      "3726 0.05 0.037037037037037035 3726\n",
      "3730 0.1 0.3333333333333333 3730\n",
      "3732 0.05 0.06666666666666667 3732\n",
      "3736 0.05 0.5 3736\n",
      "3740 0.05 0.14285714285714285 3740\n",
      "3741 0.05 0.017241379310344827 3741\n",
      "3743 0.05 0.03225806451612903 3743\n",
      "3745 0.05 0.022222222222222223 3745\n",
      "3750 0.05 0.045454545454545456 3750\n",
      "3756 0.05 0.25 3756\n",
      "3763 0.1 0.10526315789473684 3763\n",
      "3765 0.05 0.037037037037037035 3765\n",
      "3768 0.05 0.05263157894736842 3768\n",
      "3778 0.05 0.06666666666666667 3778\n",
      "3784 0.05 0.1111111111111111 3784\n",
      "3785 0.05 0.3333333333333333 3785\n",
      "3794 0.15 0.046875 3794\n",
      "3795 0.1 0.044444444444444446 3795\n",
      "3803 0.05 0.07142857142857142 3803\n",
      "3810 0.05 0.1 3810\n",
      "3812 0.05 0.25 3812\n",
      "3813 0.05 0.1 3813\n",
      "3817 0.1 0.6666666666666666 3817\n",
      "3818 0.05 0.3333333333333333 3818\n",
      "3824 0.05 0.14285714285714285 3824\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3832 0.05 0.1111111111111111 3832\n",
      "3835 0.05 0.047619047619047616 3835\n",
      "3840 0.05 0.16666666666666666 3840\n",
      "3845 0.1 0.058823529411764705 3845\n",
      "3849 0.05 0.16666666666666666 3849\n",
      "3856 0.05 0.045454545454545456 3856\n",
      "3867 0.05 0.02702702702702703 3867\n",
      "3880 0.1 0.02666666666666667 3880\n",
      "3882 0.05 0.3333333333333333 3882\n",
      "3885 0.15 0.11538461538461539 3885\n",
      "3889 0.05 0.058823529411764705 3889\n",
      "3893 0.15 0.15789473684210525 3893\n",
      "3897 0.05 0.047619047619047616 3897\n",
      "3898 0.05 0.09090909090909091 3898\n",
      "3901 0.05 0.0625 3901\n",
      "3917 0.05 0.06666666666666667 3917\n",
      "3919 0.05 0.07692307692307693 3919\n",
      "3921 0.05 0.03571428571428571 3921\n",
      "3926 0.1 0.1111111111111111 3926\n",
      "3933 0.1 0.11764705882352941 3933\n",
      "3936 0.1 0.2222222222222222 3936\n",
      "3941 0.05 0.05 3941\n",
      "3949 0.1 0.06666666666666667 3949\n",
      "3954 0.05 0.05 3954\n",
      "3961 0.05 0.2 3961\n",
      "3973 0.05 0.02702702702702703 3973\n",
      "3977 0.05 0.009615384615384616 3977\n",
      "3978 0.05 0.09090909090909091 3978\n",
      "3980 0.05 0.06666666666666667 3980\n",
      "3987 0.05 0.08333333333333333 3987\n",
      "3992 0.05 0.09090909090909091 3992\n",
      "4006 0.1 0.10526315789473684 4006\n",
      "4007 0.05 0.05555555555555555 4007\n",
      "4008 0.05 0.09090909090909091 4008\n",
      "4018 0.05 0.037037037037037035 4018\n",
      "4037 0.1 0.05555555555555555 4037\n",
      "4041 0.1 0.09090909090909091 4041\n",
      "4045 0.05 0.058823529411764705 4045\n",
      "4048 0.05 0.08333333333333333 4048\n",
      "4050 0.1 0.02857142857142857 4050\n",
      "4052 0.05 0.2 4052\n",
      "4065 0.1 0.1111111111111111 4065\n",
      "4072 0.05 0.2 4072\n",
      "4076 0.05 0.2 4076\n",
      "4077 0.05 0.02857142857142857 4077\n",
      "4078 0.1 0.044444444444444446 4078\n",
      "4081 0.05 0.1111111111111111 4081\n",
      "4086 0.05 0.03571428571428571 4086\n",
      "4087 0.05 1.0 4087\n",
      "4088 0.05 0.024390243902439025 4088\n",
      "4094 0.15 0.061224489795918366 4094\n",
      "4100 0.05 0.05263157894736842 4100\n",
      "4119 0.1 0.08 4119\n",
      "4127 0.05 0.14285714285714285 4127\n",
      "4130 0.05 0.09090909090909091 4130\n",
      "4135 0.05 0.058823529411764705 4135\n",
      "4151 0.15 0.125 4151\n",
      "4155 0.05 0.027777777777777776 4155\n",
      "4161 0.05 0.043478260869565216 4161\n",
      "4164 0.05 0.1111111111111111 4164\n",
      "4179 0.05 0.07142857142857142 4179\n",
      "4186 0.1 0.09090909090909091 4186\n",
      "4187 0.05 0.16666666666666666 4187\n",
      "4198 0.05 0.03125 4198\n",
      "4200 0.05 0.027777777777777776 4200\n",
      "4213 0.05 0.09090909090909091 4213\n",
      "4215 0.05 0.25 4215\n",
      "4218 0.05 0.09090909090909091 4218\n",
      "4221 0.05 0.09090909090909091 4221\n",
      "4225 0.05 0.022222222222222223 4225\n",
      "4229 0.1 0.11764705882352941 4229\n",
      "4232 0.05 0.058823529411764705 4232\n",
      "4237 0.05 0.015873015873015872 4237\n",
      "4238 0.05 0.3333333333333333 4238\n",
      "4249 0.05 0.021739130434782608 4249\n",
      "4251 0.05 0.5 4251\n",
      "4253 0.05 0.1 4253\n",
      "4254 0.05 0.07692307692307693 4254\n",
      "4255 0.05 0.037037037037037035 4255\n",
      "4261 0.05 0.1111111111111111 4261\n",
      "4265 0.05 0.058823529411764705 4265\n",
      "4270 0.05 0.041666666666666664 4270\n",
      "4274 0.05 0.3333333333333333 4274\n",
      "4276 0.1 0.125 4276\n",
      "4279 0.05 0.037037037037037035 4279\n",
      "4284 0.05 0.047619047619047616 4284\n",
      "4285 0.1 0.07692307692307693 4285\n",
      "4287 0.05 0.2 4287\n",
      "4290 0.05 0.07692307692307693 4290\n",
      "4293 0.05 0.25 4293\n",
      "4294 0.05 0.2 4294\n",
      "4299 0.05 0.07692307692307693 4299\n",
      "4302 0.05 0.08333333333333333 4302\n",
      "4305 0.05 0.1 4305\n",
      "4306 0.05 0.07692307692307693 4306\n",
      "4311 0.05 0.03225806451612903 4311\n",
      "4312 0.05 0.14285714285714285 4312\n",
      "4316 0.05 1.0 4316\n",
      "4319 0.1 0.11764705882352941 4319\n",
      "4322 0.05 0.125 4322\n",
      "4325 0.05 0.5 4325\n",
      "4326 0.1 0.01818181818181818 4326\n",
      "4332 0.05 0.02702702702702703 4332\n",
      "4338 0.05 0.14285714285714285 4338\n",
      "4339 0.05 0.09090909090909091 4339\n",
      "4340 0.05 0.2 4340\n",
      "4342 0.15 0.15789473684210525 4342\n",
      "4346 0.05 0.02631578947368421 4346\n",
      "4354 0.15 0.15789473684210525 4354\n",
      "4355 0.05 0.05263157894736842 4355\n",
      "4362 0.05 0.0625 4362\n",
      "4364 0.05 0.14285714285714285 4364\n",
      "4394 0.05 0.125 4394\n",
      "4404 0.05 0.011363636363636364 4404\n",
      "4405 0.1 0.1 4405\n",
      "4408 0.05 0.3333333333333333 4408\n",
      "4419 0.05 0.07692307692307693 4419\n",
      "4421 0.05 0.041666666666666664 4421\n",
      "4422 0.05 0.1111111111111111 4422\n",
      "4423 0.1 0.13333333333333333 4423\n",
      "4425 0.05 0.03125 4425\n",
      "4428 0.05 0.058823529411764705 4428\n",
      "4430 0.1 0.05405405405405406 4430\n",
      "4431 0.35 0.07446808510638298 4431\n",
      "4433 0.05 0.07692307692307693 4433\n",
      "4435 0.05 0.2 4435\n",
      "4443 0.05 0.125 4443\n",
      "4444 0.1 0.1 4444\n",
      "4447 0.05 0.07692307692307693 4447\n",
      "4460 0.05 0.2 4460\n",
      "4472 0.05 0.03571428571428571 4472\n",
      "4478 0.1 0.10526315789473684 4478\n",
      "4480 0.05 0.2 4480\n",
      "4496 0.05 0.16666666666666666 4496\n",
      "4500 0.05 0.09090909090909091 4500\n",
      "4501 0.05 0.0625 4501\n",
      "4505 0.05 0.14285714285714285 4505\n",
      "4508 0.05 0.09090909090909091 4508\n",
      "4513 0.05 0.04 4513\n",
      "4514 0.1 0.2222222222222222 4514\n",
      "4516 0.1 0.2 4516\n",
      "4519 0.05 0.1 4519\n",
      "4535 0.05 0.04 4535\n",
      "4549 0.05 0.125 4549\n",
      "4550 0.05 0.125 4550\n",
      "4553 0.05 0.05555555555555555 4553\n",
      "4559 0.05 0.020833333333333332 4559\n",
      "4562 0.05 0.3333333333333333 4562\n",
      "4568 0.05 0.2 4568\n",
      "4572 0.05 0.25 4572\n",
      "4574 0.05 0.14285714285714285 4574\n",
      "4576 0.05 0.3333333333333333 4576\n",
      "4577 0.05 0.16666666666666666 4577\n",
      "4581 0.05 0.1111111111111111 4581\n",
      "4584 0.05 1.0 4584\n",
      "4594 0.1 0.023529411764705882 4594\n",
      "4603 0.05 0.047619047619047616 4603\n",
      "4612 0.05 0.09090909090909091 4612\n",
      "4616 0.1 0.03773584905660377 4616\n",
      "4617 0.05 0.3333333333333333 4617\n",
      "4619 0.05 0.06666666666666667 4619\n",
      "4621 0.05 0.0625 4621\n",
      "4631 0.05 0.058823529411764705 4631\n",
      "4633 0.05 0.045454545454545456 4633\n",
      "4634 0.05 0.07142857142857142 4634\n",
      "4639 0.05 0.16666666666666666 4639\n",
      "4640 0.05 0.14285714285714285 4640\n",
      "4641 0.05 0.1 4641\n",
      "4644 0.05 0.07142857142857142 4644\n",
      "4646 0.1 0.2 4646\n",
      "4649 0.05 0.05 4649\n",
      "4653 0.05 0.16666666666666666 4653\n",
      "4654 0.05 0.05263157894736842 4654\n",
      "4657 0.1 0.09523809523809523 4657\n",
      "4658 0.05 0.08333333333333333 4658\n",
      "4661 0.05 0.09090909090909091 4661\n",
      "4668 0.1 0.06451612903225806 4668\n",
      "4674 0.15 0.13043478260869565 4674\n",
      "4675 0.05 0.07692307692307693 4675\n",
      "4680 0.05 0.045454545454545456 4680\n",
      "4684 0.15 0.2727272727272727 4684\n",
      "4688 0.05 0.25 4688\n",
      "4695 0.05 0.2 4695\n",
      "4698 0.05 0.125 4698\n",
      "4703 0.05 0.011363636363636364 4703\n",
      "4707 0.05 0.5 4707\n",
      "4708 0.05 0.125 4708\n",
      "4710 0.05 0.1111111111111111 4710\n",
      "4715 0.05 0.5 4715\n",
      "4717 0.05 0.04 4717\n",
      "4718 0.05 0.2 4718\n",
      "4728 0.05 0.14285714285714285 4728\n",
      "4732 0.1 0.05555555555555555 4732\n",
      "4735 0.05 0.011235955056179775 4735\n",
      "4737 0.05 0.25 4737\n",
      "4738 0.05 0.02857142857142857 4738\n",
      "4739 0.05 0.05555555555555555 4739\n",
      "4742 0.05 0.05263157894736842 4742\n",
      "4748 0.05 0.05 4748\n",
      "4750 0.1 0.1 4750\n",
      "4751 0.05 0.07692307692307693 4751\n",
      "4758 0.05 0.1 4758\n",
      "4765 0.05 0.05263157894736842 4765\n",
      "4775 0.05 0.14285714285714285 4775\n",
      "4776 0.05 0.034482758620689655 4776\n",
      "4784 0.05 0.1 4784\n",
      "4785 0.05 0.07142857142857142 4785\n",
      "4791 0.05 0.043478260869565216 4791\n",
      "4793 0.05 0.07692307692307693 4793\n",
      "4798 0.05 0.04 4798\n",
      "4808 0.05 0.03571428571428571 4808\n",
      "4817 0.05 0.25 4817\n",
      "4818 0.05 0.2 4818\n",
      "4820 0.05 0.034482758620689655 4820\n",
      "4822 0.1 0.1111111111111111 4822\n",
      "4823 0.1 0.125 4823\n",
      "4830 0.05 0.1111111111111111 4830\n",
      "4833 0.05 0.013513513513513514 4833\n",
      "4835 0.1 0.05714285714285714 4835\n",
      "4838 0.05 0.14285714285714285 4838\n",
      "4841 0.05 0.2 4841\n",
      "4843 0.05 0.16666666666666666 4843\n",
      "4844 0.05 0.3333333333333333 4844\n",
      "4846 0.05 0.2 4846\n",
      "4849 0.05 0.029411764705882353 4849\n",
      "4852 0.05 0.03571428571428571 4852\n",
      "4856 0.05 0.08333333333333333 4856\n",
      "4857 0.05 0.125 4857\n",
      "4865 0.05 0.1111111111111111 4865\n",
      "4868 0.05 0.16666666666666666 4868\n",
      "4869 0.05 0.125 4869\n",
      "4870 0.1 0.125 4870\n",
      "4872 0.05 0.08333333333333333 4872\n",
      "4874 0.05 0.1111111111111111 4874\n",
      "4875 0.05 0.06666666666666667 4875\n",
      "4879 0.15 0.23076923076923078 4879\n",
      "4884 0.05 0.2 4884\n",
      "4885 0.05 0.1 4885\n",
      "4886 0.05 0.14285714285714285 4886\n",
      "4889 0.05 0.09090909090909091 4889\n",
      "4894 0.1 0.2857142857142857 4894\n",
      "4896 0.05 0.09090909090909091 4896\n",
      "4897 0.05 0.14285714285714285 4897\n",
      "4901 0.05 0.02702702702702703 4901\n",
      "4903 0.05 0.037037037037037035 4903\n",
      "4905 0.05 0.045454545454545456 4905\n",
      "4908 0.1 0.1 4908\n",
      "4909 0.1 0.13333333333333333 4909\n",
      "4916 0.05 0.09090909090909091 4916\n",
      "4919 0.1 0.025974025974025976 4919\n"
     ]
    }
   ],
   "source": [
    "result = pd.DataFrame(columns=(\"user\",\"precision\",\"recall\"))\n",
    "for u_item in user_index.items():\n",
    "    u_name = u_item[0]\n",
    "    u_index = u_item[1]\n",
    "    u_index,precision, recall = predict(u_index)\n",
    "    result.loc[u_index]=(u_name,precision, recall)\n",
    "    if precision>0 or recall>0:\n",
    "        print(u_index,precision, recall,u_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>precision</th>\n",
       "      <th>recall</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>4924.000000</td>\n",
       "      <td>4924.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.013739</td>\n",
       "      <td>0.026150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.028781</td>\n",
       "      <td>0.073925</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>0.350000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         precision       recall\n",
       "count  4924.000000  4924.000000\n",
       "mean      0.013739     0.026150\n",
       "std       0.028781     0.073925\n",
       "min       0.000000     0.000000\n",
       "25%       0.000000     0.000000\n",
       "50%       0.000000     0.000000\n",
       "75%       0.000000     0.000000\n",
       "max       0.350000     1.000000"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user</th>\n",
       "      <th>precision</th>\n",
       "      <th>recall</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5a905f000fc1ff3df7ca807d57edb608863db05d</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.090909</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>e21477efb83bd323205ce6f5bd662f3df9d477e5</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ec25e3d78ea8374869a772dc58bb903528a3c9cc</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>b12c786deef0e618b5f277bc337f67128f425efe</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>fd13b9d49c54e00ff413fe3c095ba581c7fc611e</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1ee591a388274035a4fd8a4ae40a9589d320bb9d</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>76235885b32c4e8c82760c340dc54f9b608d7d7e</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.032258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0f78b75616a51fc40ff0ac27589c6901bc0637e8</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>4e11f45d732f4861772b2906f81a7d384552ad12</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>3f73f44560e822344b0fb7c6b463869743eb9860</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1774d9180bdaf049d58d9bc88c91961a917adec3</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.062500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>ac1c7a488e016d477fd6d23ef45a8a48643c02e7</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>da681f423e8574d2581534fd138eae264dea0f5c</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>bc3551591ed12f1900f06d9499a4314a78348107</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>371e9aff6b9f644e7598dbc4dd5640b1544b97f3</td>\n",
       "      <td>0.10</td>\n",
       "      <td>0.153846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>eb671bc38ee5d5d13b815fef98f1e9de44580c45</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>c0ff0f1c93f67c1fb372b36b1b08bb4c76bead7d</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>be21ec120193effd2a5e545c4bafa2e1f92e9816</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>476081b0f3867e7f08f9a5ba2945848f8ddb3712</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>889c415eed565d927c11cee844de911a75245c8f</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                        user  precision    recall\n",
       "0   5a905f000fc1ff3df7ca807d57edb608863db05d       0.05  0.090909\n",
       "1   e21477efb83bd323205ce6f5bd662f3df9d477e5       0.00  0.000000\n",
       "2   ec25e3d78ea8374869a772dc58bb903528a3c9cc       0.00  0.000000\n",
       "3   b12c786deef0e618b5f277bc337f67128f425efe       0.00  0.000000\n",
       "4   fd13b9d49c54e00ff413fe3c095ba581c7fc611e       0.00  0.000000\n",
       "5   1ee591a388274035a4fd8a4ae40a9589d320bb9d       0.00  0.000000\n",
       "6   76235885b32c4e8c82760c340dc54f9b608d7d7e       0.05  0.032258\n",
       "7   0f78b75616a51fc40ff0ac27589c6901bc0637e8       0.00  0.000000\n",
       "8   4e11f45d732f4861772b2906f81a7d384552ad12       0.00  0.000000\n",
       "9   3f73f44560e822344b0fb7c6b463869743eb9860       0.00  0.000000\n",
       "10  1774d9180bdaf049d58d9bc88c91961a917adec3       0.05  0.062500\n",
       "11  ac1c7a488e016d477fd6d23ef45a8a48643c02e7       0.00  0.000000\n",
       "12  da681f423e8574d2581534fd138eae264dea0f5c       0.00  0.000000\n",
       "13  bc3551591ed12f1900f06d9499a4314a78348107       0.00  0.000000\n",
       "14  371e9aff6b9f644e7598dbc4dd5640b1544b97f3       0.10  0.153846\n",
       "15  eb671bc38ee5d5d13b815fef98f1e9de44580c45       0.00  0.000000\n",
       "16  c0ff0f1c93f67c1fb372b36b1b08bb4c76bead7d       0.00  0.000000\n",
       "17  be21ec120193effd2a5e545c4bafa2e1f92e9816       0.00  0.000000\n",
       "18  476081b0f3867e7f08f9a5ba2945848f8ddb3712       0.00  0.000000\n",
       "19  889c415eed565d927c11cee844de911a75245c8f       0.00  0.000000"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result.head(n=20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
